// Copyright (C) 2022 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#include "ov_ops/augru_sequence.hpp"

#include <gtest/gtest.h>

#include "base_reference_test.hpp"

using namespace reference_tests;
using namespace ov;

namespace {
struct AUGRUSequenceParams {
    template <class T>
    AUGRUSequenceParams(const size_t batchSize,
                        const size_t inputSize,
                        const size_t hiddenSize,
                        const size_t seqLength,
                        const element::Type_t& iType,
                        const std::vector<T>& XValues,
                        const std::vector<T>& H_tValues,
                        const std::vector<int64_t>& seqLengthsValues,
                        const std::vector<T>& WValues,
                        const std::vector<T>& RValues,
                        const std::vector<T>& BValues,
                        const std::vector<T>& AValues,
                        const std::vector<T>& YValues,
                        const std::vector<T>& HoValues,
                        const std::string& testcaseName = "")
        : batchSize(batchSize),
          inputSize(inputSize),
          hiddenSize(hiddenSize),
          seqLength(seqLength),
          iType(iType),
          oType(iType),
          testcaseName(testcaseName) {
        numDirections = 1;

        Shape XShape = Shape{batchSize, seqLength, inputSize};
        Shape H_tShape = Shape{batchSize, numDirections, hiddenSize};
        Shape seqLengthsShape = Shape{batchSize};
        Shape WShape = Shape{numDirections, 3 * hiddenSize, inputSize};
        Shape RShape = Shape{numDirections, 3 * hiddenSize, hiddenSize};
        Shape YShape = Shape{batchSize, numDirections, seqLength, hiddenSize};
        Shape HoShape = Shape{batchSize, numDirections, hiddenSize};

        X = reference_tests::Tensor(XShape, iType, XValues);
        H_t = reference_tests::Tensor(H_tShape, iType, H_tValues);
        sequence_lengths = reference_tests::Tensor(seqLengthsShape, element::Type_t::i64, seqLengthsValues);
        W = reference_tests::Tensor(WShape, iType, WValues);
        R = reference_tests::Tensor(RShape, iType, RValues);

        Y = reference_tests::Tensor(YShape, oType, YValues);
        Ho = reference_tests::Tensor(HoShape, oType, HoValues);

        Shape BShape = Shape{numDirections, 3 * hiddenSize};
        B = reference_tests::Tensor(BShape, iType, BValues);

        Shape AShape = Shape{batchSize, seqLength, 1};
        A = reference_tests::Tensor(AShape, iType, AValues);
    }

    size_t batchSize;
    size_t inputSize;
    size_t hiddenSize;
    size_t seqLength;
    size_t numDirections;
    element::Type_t iType;
    element::Type_t oType;

    reference_tests::Tensor X;
    reference_tests::Tensor H_t;
    reference_tests::Tensor sequence_lengths;
    reference_tests::Tensor W;
    reference_tests::Tensor R;
    reference_tests::Tensor B;
    reference_tests::Tensor A;
    reference_tests::Tensor Y;
    reference_tests::Tensor Ho;
    std::string testcaseName;
};

class ReferenceAUGRUSequenceTest : public testing::TestWithParam<AUGRUSequenceParams>, public CommonReferenceTest {
public:
    void SetUp() override {
        auto params = GetParam();
        function = CreateFunction(params);
        inputData = {params.X.data,
                     params.H_t.data,
                     params.sequence_lengths.data,
                     params.W.data,
                     params.R.data,
                     params.B.data,
                     params.A.data};
        refOutData = {params.Y.data, params.Ho.data};
    }

    static std::string getTestCaseName(const testing::TestParamInfo<AUGRUSequenceParams>& obj) {
        auto param = obj.param;
        std::ostringstream result;
        result << "iType=" << param.iType << "_";
        result << "xShape=" << param.X.shape << "_";
        result << "htShape=" << param.H_t.shape << "_";
        result << "stShape=" << param.sequence_lengths.shape << "_";
        result << "wShape=" << param.W.shape << "_";
        result << "rShape=" << param.R.shape << "_";
        result << "bShape=" << param.B.shape << "_";
        result << "YShape=" << param.Y.shape << "_";
        result << "hoShape=" << param.Ho.shape;
        if (!param.testcaseName.empty())
            result << "_" << param.testcaseName;

        return result.str();
    }

private:
    static std::shared_ptr<Model> CreateFunction(const AUGRUSequenceParams& params) {
        const auto X = std::make_shared<op::v0::Parameter>(params.X.type, params.X.shape);
        const auto H_t = std::make_shared<op::v0::Parameter>(params.H_t.type, params.H_t.shape);
        const auto sequence_lengths =
            std::make_shared<op::v0::Parameter>(params.sequence_lengths.type, params.sequence_lengths.shape);
        const auto W = std::make_shared<op::v0::Parameter>(params.W.type, params.W.shape);
        const auto R = std::make_shared<op::v0::Parameter>(params.R.type, params.R.shape);
        const auto B = std::make_shared<op::v0::Parameter>(params.B.type, params.B.shape);
        const auto A = std::make_shared<op::v0::Parameter>(params.A.type, params.A.shape);

        const auto augru_sequence =
            std::make_shared<ov::op::internal::AUGRUSequence>(X, H_t, sequence_lengths, W, R, B, A, params.hiddenSize);

        auto function =
            std::make_shared<Model>(augru_sequence->outputs(), ParameterVector{X, H_t, sequence_lengths, W, R, B, A});
        return function;
    }
};

TEST_P(ReferenceAUGRUSequenceTest, CompareWithRefs) {
    Exec();
}

template <element::Type_t ET>
std::vector<AUGRUSequenceParams> generateParams() {
    using T = typename element_type_traits<ET>::value_type;

    std::vector<AUGRUSequenceParams> params{
        AUGRUSequenceParams(
            5,
            10,
            10,
            10,
            ET,
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037,
                6.2595,  6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654,  7.88937,
                1.40811, 2.2597,  8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069,
                4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691,  4.20879, 7.77509, 8.93208,
                1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224,
                7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192,
                1.63073, 5.25228, 7.68488, 2.7276,  5.1788,  3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051,
                4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026,  1.82401, 6.1306,
                4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714,
                2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181,
                1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686,  3.68812, 2.83922, 9.83581, 9.03719,
                7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791,  2.94085,
                9.24799, 5.15937, 2.19041, 7.87817, 2.9146,  1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937,
                9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521,  5.70463, 7.6313,  2.48866, 7.18352, 4.8413,
                7.55702, 7.80702, 4.5785,  9.3268,  2.83159, 1.07202, 9.33716, 3.6506,  2.50256, 1.21691, 5.06801,
                8.27505, 4.31539, 6.48286, 1.31363, 4.1912,  1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767,
                5.24875, 1.94852, 5.52768, 8.97121, 5.8094,  3.53329, 4.19126, 9.06652, 3.1734,  1.21496, 9.69154,
                4.86971, 4.1166,  6.19361, 2.13874, 9.55039, 3.8225,  9.57548, 2.96554, 3.2383,  8.77422, 3.11741,
                8.3359,  5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474,  4.59474, 6.19214, 8.80766, 8.07546,
                3.29232, 1.74029, 2.4198,  2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046,
                9.10476, 1.04197, 3.37783, 5.2064,  4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048,
                4.78967, 7.16219, 3.4651,  1.09,    2.9788,  1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892,
                5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565,
                7.35114, 3.1439,  1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637,
                8.6232,  8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225,  3.99956, 1.08021, 5.54918,
                7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595,
                5.59325, 9.89258, 2.30223, 1.4347,  9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912,
                6.62167, 2.80244, 6.626,   3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608,
                3.73491, 3.8238,  3.03815, 7.05101, 8.0103,  5.61396, 6.53738, 1.41095, 5.0149,  9.71211, 4.23604,
                5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328,  8.2817,  5.12336, 8.98577, 5.80541, 6.19552,
                9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261,
                3.02851, 6.82079, 9.2902,  2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755,
                2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457,
                5.55154, 7.24966, 5.1128,  4.25147, 8.34407, 1.4123,  4.49045, 5.12671, 7.62159, 9.18673, 3.49665,
                8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283,  9.88249,
                4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155,  9.94928, 6.88321, 1.33685,
                7.4718,  7.19305, 6.47932, 1.9559,  3.52616, 7.98593, 9.0115,  5.59539, 7.44137, 1.70001, 6.53774,
                8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073,  9.00437,
                8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916,
                1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695,
                3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079,
                1.53504, 8.9785,  6.1691,  4.40962, 10},
            std::vector<T>{1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985,
                           8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215,
                           8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319,
                           7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754,
                           6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10},
            std::vector<int64_t>{10, 10, 10, 10, 10},
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037,
                6.2595,  6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654,  7.88937,
                1.40811, 2.2597,  8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069,
                4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691,  4.20879, 7.77509, 8.93208,
                1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224,
                7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192,
                1.63073, 5.25228, 7.68488, 2.7276,  5.1788,  3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051,
                4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026,  1.82401, 6.1306,
                4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714,
                2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181,
                1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686,  3.68812, 2.83922, 9.83581, 9.03719,
                7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791,  2.94085,
                9.24799, 5.15937, 2.19041, 7.87817, 2.9146,  1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937,
                9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521,  5.70463, 7.6313,  2.48866, 7.18352, 4.8413,
                7.55702, 7.80702, 4.5785,  9.3268,  2.83159, 1.07202, 9.33716, 3.6506,  2.50256, 1.21691, 5.06801,
                8.27505, 4.31539, 6.48286, 1.31363, 4.1912,  1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767,
                5.24875, 1.94852, 5.52768, 8.97121, 5.8094,  3.53329, 4.19126, 9.06652, 3.1734,  1.21496, 9.69154,
                4.86971, 4.1166,  6.19361, 2.13874, 9.55039, 3.8225,  9.57548, 2.96554, 3.2383,  8.77422, 3.11741,
                8.3359,  5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474,  4.59474, 6.19214, 8.80766, 8.07546,
                3.29232, 1.74029, 2.4198,  2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046,
                9.10476, 1.04197, 3.37783, 5.2064,  4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048,
                4.78967, 7.16219, 3.4651,  1.09,    2.9788,  1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892,
                5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565,
                7.35114, 3.1439,  10},
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037,
                6.2595,  6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654,  7.88937,
                1.40811, 2.2597,  8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069,
                4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691,  4.20879, 7.77509, 8.93208,
                1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224,
                7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192,
                1.63073, 5.25228, 7.68488, 2.7276,  5.1788,  3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051,
                4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026,  1.82401, 6.1306,
                4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714,
                2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181,
                1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686,  3.68812, 2.83922, 9.83581, 9.03719,
                7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791,  2.94085,
                9.24799, 5.15937, 2.19041, 7.87817, 2.9146,  1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937,
                9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521,  5.70463, 7.6313,  2.48866, 7.18352, 4.8413,
                7.55702, 7.80702, 4.5785,  9.3268,  2.83159, 1.07202, 9.33716, 3.6506,  2.50256, 1.21691, 5.06801,
                8.27505, 4.31539, 6.48286, 1.31363, 4.1912,  1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767,
                5.24875, 1.94852, 5.52768, 8.97121, 5.8094,  3.53329, 4.19126, 9.06652, 3.1734,  1.21496, 9.69154,
                4.86971, 4.1166,  6.19361, 2.13874, 9.55039, 3.8225,  9.57548, 2.96554, 3.2383,  8.77422, 3.11741,
                8.3359,  5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474,  4.59474, 6.19214, 8.80766, 8.07546,
                3.29232, 1.74029, 2.4198,  2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046,
                9.10476, 1.04197, 3.37783, 5.2064,  4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048,
                4.78967, 7.16219, 3.4651,  1.09,    2.9788,  1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892,
                5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565,
                7.35114, 3.1439,  10},
            std::vector<T>{1,      9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985,
                           8.6168, 3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215,
                           8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10},
            std::vector<T>(5 * 10, 0),
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 1,
                9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 1,       9.97466,
                9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 1,       9.97466, 9.39302,
                2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 1,       9.97466, 9.39302, 2.15312,
                9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 1,       9.97466, 9.39302, 2.15312, 9.99136,
                3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,
                4.56923, 4.4912,  7.02771, 9.41985, 1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923,
                4.4912,  7.02771, 9.41985, 1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,
                7.02771, 9.41985, 1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771,
                9.41985, 8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215,
                8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168,  3.81946,
                5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168,  3.81946, 5.72093,
                4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168,  3.81946, 5.72093, 4.99108,
                3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168,  3.81946, 5.72093, 4.99108, 3.0662,
                5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973,
                9.22566, 5.11484, 4.87629, 9.45215, 8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566,
                5.11484, 4.87629, 9.45215, 8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484,
                4.87629, 9.45215, 8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745,
                1.53319, 8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319,
                8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055,
                7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055,  7.44373, 8.22482,
                1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055,  7.44373, 8.22482, 1.83521,
                5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055,  7.44373, 8.22482, 1.83521, 5.66337,
                8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518,
                8.46232, 8.46643, 3.45745, 1.53319, 8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232,
                8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983,
                4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285,
                1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754,
                7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475,
                6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759,
                7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609,
                2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796,
                3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667,
                2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315,
                1.86555, 9.13033, 10,      6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555,
                9.13033, 10,      6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033,
                10,      6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10,
                6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10,      6.61627,
                6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10,      6.61627, 6.94572,
                3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10,      6.61627, 6.94572, 3.68646,
                5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10,      6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10,      6.61627, 6.94572, 3.68646, 5.01521, 2.99912,
                1.66028, 5.22315, 1.86555, 9.13033, 10},
            std::vector<T>{1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985,
                           8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215,
                           8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319,
                           7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754,
                           6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10},
            "augru_sequence_zero_attentional_gate"),
        AUGRUSequenceParams(
            5,
            10,
            10,
            10,
            ET,
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037,
                6.2595,  6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654,  7.88937,
                1.40811, 2.2597,  8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069,
                4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691,  4.20879, 7.77509, 8.93208,
                1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224,
                7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192,
                1.63073, 5.25228, 7.68488, 2.7276,  5.1788,  3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051,
                4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026,  1.82401, 6.1306,
                4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714,
                2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181,
                1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686,  3.68812, 2.83922, 9.83581, 9.03719,
                7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791,  2.94085,
                9.24799, 5.15937, 2.19041, 7.87817, 2.9146,  1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937,
                9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521,  5.70463, 7.6313,  2.48866, 7.18352, 4.8413,
                7.55702, 7.80702, 4.5785,  9.3268,  2.83159, 1.07202, 9.33716, 3.6506,  2.50256, 1.21691, 5.06801,
                8.27505, 4.31539, 6.48286, 1.31363, 4.1912,  1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767,
                5.24875, 1.94852, 5.52768, 8.97121, 5.8094,  3.53329, 4.19126, 9.06652, 3.1734,  1.21496, 9.69154,
                4.86971, 4.1166,  6.19361, 2.13874, 9.55039, 3.8225,  9.57548, 2.96554, 3.2383,  8.77422, 3.11741,
                8.3359,  5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474,  4.59474, 6.19214, 8.80766, 8.07546,
                3.29232, 1.74029, 2.4198,  2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046,
                9.10476, 1.04197, 3.37783, 5.2064,  4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048,
                4.78967, 7.16219, 3.4651,  1.09,    2.9788,  1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892,
                5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565,
                7.35114, 3.1439,  1.39976, 3.53095, 8.78581, 1.65811, 6.94299, 2.68641, 5.70058, 9.13491, 5.27637,
                8.6232,  8.54902, 2.25352, 5.86274, 5.20377, 2.96815, 4.96745, 5.3225,  3.99956, 1.08021, 5.54918,
                7.05833, 1.49913, 2.41822, 6.44593, 3.87301, 9.01465, 8.11336, 2.95749, 2.80188, 7.12396, 2.40595,
                5.59325, 9.89258, 2.30223, 1.4347,  9.09158, 7.43797, 3.79295, 4.53646, 1.72705, 4.16909, 1.00912,
                6.62167, 2.80244, 6.626,   3.89307, 1.42586, 7.51028, 7.83327, 4.65674, 7.33902, 6.26823, 9.72608,
                3.73491, 3.8238,  3.03815, 7.05101, 8.0103,  5.61396, 6.53738, 1.41095, 5.0149,  9.71211, 4.23604,
                5.98629, 4.70219, 9.69442, 2.82752, 9.93544, 6.9328,  8.2817,  5.12336, 8.98577, 5.80541, 6.19552,
                9.25748, 3.82732, 7.53525, 8.24712, 5.32057, 5.38817, 8.57269, 5.99975, 3.42893, 5.38068, 3.48261,
                3.02851, 6.82079, 9.2902,  2.80427, 8.91868, 5.19227, 7.52482, 3.72584, 5.40107, 2.83307, 1.79755,
                2.49121, 5.52697, 8.08823, 9.13242, 2.97572, 7.64318, 3.32023, 6.07788, 2.19187, 4.34879, 1.7457,
                5.55154, 7.24966, 5.1128,  4.25147, 8.34407, 1.4123,  4.49045, 5.12671, 7.62159, 9.18673, 3.49665,
                8.35992, 6.90684, 1.10152, 7.61818, 6.43145, 7.12017, 6.25564, 6.16169, 4.24916, 9.6283,  9.88249,
                4.48422, 8.52562, 9.83928, 6.26818, 7.03839, 1.77631, 9.92305, 8.0155,  9.94928, 6.88321, 1.33685,
                7.4718,  7.19305, 6.47932, 1.9559,  3.52616, 7.98593, 9.0115,  5.59539, 7.44137, 1.70001, 6.53774,
                8.54023, 7.26405, 5.99553, 8.75071, 7.70789, 3.38094, 9.99792, 6.16359, 6.75153, 5.4073,  9.00437,
                8.87059, 8.63011, 6.82951, 6.27021, 3.53425, 9.92489, 8.19695, 5.51473, 7.95084, 2.11852, 9.28916,
                1.40353, 3.05744, 8.58238, 3.75014, 5.35889, 6.85048, 2.29549, 3.75218, 8.98228, 8.98158, 5.63695,
                3.40379, 8.92309, 5.48185, 4.00095, 9.05227, 2.84035, 8.37644, 8.54954, 5.70516, 2.45744, 9.54079,
                1.53504, 8.9785,  6.1691,  4.40962, 10},
            std::vector<T>{1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985,
                           8.6168,  3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215,
                           8.0055,  7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319,
                           7.03475, 6.33759, 7.04489, 4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754,
                           6.61627, 6.94572, 3.68646, 5.01521, 2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 10},
            std::vector<int64_t>{10, 10, 10, 10, 10},
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037,
                6.2595,  6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654,  7.88937,
                1.40811, 2.2597,  8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069,
                4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691,  4.20879, 7.77509, 8.93208,
                1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224,
                7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192,
                1.63073, 5.25228, 7.68488, 2.7276,  5.1788,  3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051,
                4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026,  1.82401, 6.1306,
                4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714,
                2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181,
                1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686,  3.68812, 2.83922, 9.83581, 9.03719,
                7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791,  2.94085,
                9.24799, 5.15937, 2.19041, 7.87817, 2.9146,  1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937,
                9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521,  5.70463, 7.6313,  2.48866, 7.18352, 4.8413,
                7.55702, 7.80702, 4.5785,  9.3268,  2.83159, 1.07202, 9.33716, 3.6506,  2.50256, 1.21691, 5.06801,
                8.27505, 4.31539, 6.48286, 1.31363, 4.1912,  1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767,
                5.24875, 1.94852, 5.52768, 8.97121, 5.8094,  3.53329, 4.19126, 9.06652, 3.1734,  1.21496, 9.69154,
                4.86971, 4.1166,  6.19361, 2.13874, 9.55039, 3.8225,  9.57548, 2.96554, 3.2383,  8.77422, 3.11741,
                8.3359,  5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474,  4.59474, 6.19214, 8.80766, 8.07546,
                3.29232, 1.74029, 2.4198,  2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046,
                9.10476, 1.04197, 3.37783, 5.2064,  4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048,
                4.78967, 7.16219, 3.4651,  1.09,    2.9788,  1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892,
                5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565,
                7.35114, 3.1439,  10},
            std::vector<T>{
                1,       9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985, 8.6168,
                3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215, 8.0055,  7.44373,
                8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 1.53319, 7.03475, 6.33759, 7.04489,
                4.70609, 2.77796, 3.60667, 2.27908, 8.04983, 4.71285, 1.30754, 6.61627, 6.94572, 3.68646, 5.01521,
                2.99912, 1.66028, 5.22315, 1.86555, 9.13033, 2.07541, 5.72319, 1.75261, 9.25175, 9.19404, 3.69037,
                6.2595,  6.09321, 6.52544, 9.60882, 3.34881, 3.07914, 5.80104, 9.54944, 5.43754, 5.8654,  7.88937,
                1.40811, 2.2597,  8.13163, 1.26821, 8.94813, 5.86709, 5.03182, 9.02922, 4.39826, 5.84582, 6.87069,
                4.25135, 6.13908, 6.74053, 2.13683, 7.21184, 6.82974, 4.18545, 7.8691,  4.20879, 7.77509, 8.93208,
                1.10502, 5.48298, 1.66413, 8.08256, 1.57661, 4.19779, 9.47653, 4.41823, 7.86628, 7.94436, 3.71224,
                7.95465, 2.37637, 6.20771, 1.08107, 7.38138, 5.23577, 7.88133, 5.20653, 3.42101, 8.48523, 5.96192,
                1.63073, 5.25228, 7.68488, 2.7276,  5.1788,  3.07327, 5.57423, 2.87711, 1.44374, 5.66976, 2.55051,
                4.56682, 1.96629, 5.58829, 1.91922, 3.59846, 3.08583, 9.70901, 3.50487, 3.1026,  1.82401, 6.1306,
                4.76134, 4.31059, 8.31695, 3.60784, 7.45652, 6.51653, 4.84219, 7.76686, 4.85031, 4.85544, 4.25714,
                2.38005, 9.43471, 9.24769, 8.03763, 6.54696, 1.32399, 6.88891, 2.16793, 3.64924, 4.24733, 3.47181,
                1.66572, 2.36923, 2.45457, 9.44841, 4.34021, 1.45016, 7.6686,  3.68812, 2.83922, 9.83581, 9.03719,
                7.83414, 6.86009, 1.35715, 8.32489, 7.86316, 5.09754, 5.78644, 1.98402, 2.31429, 5.5791,  2.94085,
                9.24799, 5.15937, 2.19041, 7.87817, 2.9146,  1.66833, 1.85877, 2.45985, 4.20817, 1.85777, 2.28937,
                9.37912, 6.18926, 8.55681, 6.60963, 3.92066, 7.5521,  5.70463, 7.6313,  2.48866, 7.18352, 4.8413,
                7.55702, 7.80702, 4.5785,  9.3268,  2.83159, 1.07202, 9.33716, 3.6506,  2.50256, 1.21691, 5.06801,
                8.27505, 4.31539, 6.48286, 1.31363, 4.1912,  1.70668, 7.23867, 1.11441, 5.13591, 9.65186, 4.00767,
                5.24875, 1.94852, 5.52768, 8.97121, 5.8094,  3.53329, 4.19126, 9.06652, 3.1734,  1.21496, 9.69154,
                4.86971, 4.1166,  6.19361, 2.13874, 9.55039, 3.8225,  9.57548, 2.96554, 3.2383,  8.77422, 3.11741,
                8.3359,  5.89508, 2.72134, 6.29956, 1.43323, 1.14286, 1.4474,  4.59474, 6.19214, 8.80766, 8.07546,
                3.29232, 1.74029, 2.4198,  2.88544, 4.75644, 4.12921, 7.29896, 7.27759, 1.67252, 1.32823, 8.1046,
                9.10476, 1.04197, 3.37783, 5.2064,  4.23835, 3.16196, 1.20852, 5.78501, 2.17175, 6.05313, 2.51048,
                4.78967, 7.16219, 3.4651,  1.09,    2.9788,  1.28761, 9.41385, 8.03883, 5.65835, 1.14816, 3.6892,
                5.86648, 8.73895, 2.66603, 1.75192, 1.39845, 4.99427, 1.17387, 1.60329, 8.30594, 6.72662, 7.95565,
                7.35114, 3.1439,  10},
            std::vector<T>{1,      9.97466, 9.39302, 2.15312, 9.99136, 3.1248,  4.56923, 4.4912,  7.02771, 9.41985,
                           8.6168, 3.81946, 5.72093, 4.99108, 3.0662,  5.80973, 9.22566, 5.11484, 4.87629, 9.45215,
                           8.0055, 7.44373, 8.22482, 1.83521, 5.66337, 8.78518, 8.46232, 8.46643, 3.45745, 10},
            std::vector<T>{0.034518f, 0.673286f, 0.406714f, 0.252863f, 0.403579f, 0.985528f, 0.195026f, 0.102555f,
                           0.862911f, 0.698157f, 0.159086f, 0.980120f, 0.821253f, 0.041956f, 0.297002f, 0.154800f,
                           0.107107f, 0.457263f, 0.512179f, 0.372368f, 0.672125f, 0.078459f, 0.593353f, 0.800342f,
                           0.245871f, 0.675492f, 0.799024f, 0.432696f, 0.095204f, 0.187363f, 0.715765f, 0.981477f,
                           0.806237f, 0.544187f, 0.450795f, 0.717673f, 0.426730f, 0.601688f, 0.765923f, 0.675334f,
                           0.341641f, 0.958286f, 0.137889f, 0.239074f, 0.015245f, 0.148769f, 0.793591f, 0.210904f,
                           0.973056f, 0.646550f},
            std::vector<T>{
                1,       9.66487, 9.10331, 2.11332, 9.681,   3.05146, 4.44603, 4.37069, 6.81965, 9.12921, 1,
                3.83094, 3.64746, 1.36374, 3.8362,  1.67024, 2.12587, 2.10125, 2.90136, 3.65593, 1,       2.67955,
                2.5707,  1.2158,  2.68268, 1.39764, 1.66796, 1.65336, 2.12805, 2.57572, 1,       2.25486, 2.17353,
                1.16123, 2.25719, 1.29709, 1.49906, 1.48815, 1.84281, 2.17728, 1,       1.74842, 1.69992, 1.09616,
                1.74982, 1.17719, 1.29765, 1.29114, 1.50267, 1.70216, 1,       1.01083, 1.01013, 1.00139, 1.01085,
                1.00256, 1.00431, 1.00421, 1.00727, 1.01016, 1,       1.00872, 1.00815, 1.00112, 1.00874, 1.00206,
                1.00347, 1.00339, 1.00586, 1.00818, 1,       1.00782, 1.00732, 1.00101, 1.00784, 1.00185, 1.00311,
                1.00304, 1.00526, 1.00734, 1,       1.00107, 1.001,   1.00014, 1.00107, 1.00025, 1.00043, 1.00042,
                1.00072, 1.00101, 1,       1.00032, 1.0003,  1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022,
                1.0003,  7.40507, 3.37092, 4.9699,  4.35616, 2.7375,  5.04457, 7.91707, 4.46023, 4.25963, 8.10753,
                1.12733, 1.04713, 1.07892, 1.06672, 1.03454, 1.08041, 1.13751, 1.06879, 1.0648,  1.1413,  1.02276,
                1.00842, 1.01411, 1.01193, 1.00617, 1.01437, 1.02458, 1.0123,  1.01158, 1.02526, 1.02181, 1.00807,
                1.01352, 1.01143, 1.00592, 1.01377, 1.02355, 1.01178, 1.0111,  1.0242,  1.01533, 1.00567, 1.0095,
                1.00803, 1.00416, 1.00968, 1.01655, 1.00828, 1.0078,  1.01701, 1.01296, 1.0048,  1.00803, 1.00679,
                1.00351, 1.00818, 1.01399, 1.007,   1.00659, 1.01438, 1.01157, 1.00428, 1.00717, 1.00606, 1.00314,
                1.00731, 1.01249, 1.00625, 1.00589, 1.01284, 1.00628, 1.00232, 1.00389, 1.00329, 1.0017,  1.00396,
                1.00678, 1.00339, 1.0032,  1.00697, 1.00306, 1.00113, 1.0019,  1.0016,  1.00083, 1.00193, 1.00331,
                1.00165, 1.00156, 1.0034,  1.00192, 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104,
                1.00098, 1.00213, 3.29693, 3.11274, 3.36884, 1.27384, 2.529,   3.55257, 3.44671, 3.44806, 1.80574,
                1.17482, 3.11671, 2.94697, 3.18298, 1.25236, 2.40904, 3.35229, 3.25474, 3.25598, 1.74252, 1.1611,
                1.86076, 1.79173, 1.8877,  1.10262, 1.57298, 1.95655, 1.91688, 1.91739, 1.30194, 1.06551, 1.17186,
                1.15808, 1.17724, 1.02049, 1.1144,  1.19098, 1.18306, 1.18316, 1.06029, 1.01308, 1.1296,  1.11921,
                1.13366, 1.01545, 1.08627, 1.14403, 1.13805, 1.13813, 1.04546, 1.00986, 1.04206, 1.03868, 1.04337,
                1.00501, 1.028,   1.04674, 1.0448,  1.04482, 1.01475, 1.0032,  1.00845, 1.00777, 1.00872, 1.00101,
                1.00563, 1.00939, 1.009,   1.00901, 1.00296, 1.00064, 1.0048,  1.00441, 1.00495, 1.00057, 1.00319,
                1.00533, 1.00511, 1.00511, 1.00168, 1.00037, 1.00434, 1.00399, 1.00447, 1.00052, 1.00289, 1.00482,
                1.00462, 1.00462, 1.00152, 1.00033, 1.00353, 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376,
                1.00376, 1.00124, 1.00027, 2.71529, 2.51713, 2.71817, 2.0534,  1.50536, 1.74091, 1.36356, 3.00381,
                2.05532, 1.08741, 1.03177, 1.0281,  1.03183, 1.01951, 1.00936, 1.01372, 1.00673, 1.03712, 1.01955,
                1.00162, 1.00616, 1.00545, 1.00617, 1.00378, 1.00181, 1.00266, 1.0013,  1.00719, 1.00379, 1.00031,
                1.00281, 1.00248, 1.00281, 1.00172, 1.00083, 1.00121, 1.00059, 1.00328, 1.00173, 1.00014, 1.00154,
                1.00136, 1.00154, 1.00095, 1.00045, 1.00067, 1.00033, 1.0018,  1.00095, 1.00008, 1.00044, 1.00038,
                1.00044, 1.00027, 1.00013, 1.00019, 1.00009, 1.00051, 1.00027, 1.00002, 1.00025, 1.00022, 1.00025,
                1.00015, 1.00007, 1.00011, 1.00005, 1.00029, 1.00015, 1.00001, 1.0001,  1.00009, 1.0001,  1.00006,
                1.00003, 1.00004, 1.00002, 1.00012, 1.00006, 1.00001, 1.00002, 1.00002, 1.00002, 1.00001, 1.00001,
                1.00001, 1,       1.00003, 1.00001, 1,       1.00001, 1.00001, 1.00001, 1,       1,       1,
                1,       1.00001, 1,       1,       4.69752, 4.91442, 2.76866, 3.64345, 2.31614, 1.4347,  3.78035,
                1.56984, 6.35268, 6.92523, 1.15424, 1.16329, 1.07378, 1.11027, 1.0549,  1.01813, 1.11598, 1.02377,
                1.22328, 1.24717, 1.13297, 1.14077, 1.0636,  1.09506, 1.04733, 1.01563, 1.09999, 1.02049, 1.19249,
                1.21308, 1.10118, 1.10712, 1.0484,  1.07234, 1.03602, 1.0119,  1.07608, 1.01559, 1.14647, 1.16214,
                1.09964, 1.10548, 1.04766, 1.07123, 1.03547, 1.01171, 1.07492, 1.01536, 1.14424, 1.15967, 1.08482,
                1.08979, 1.04057, 1.06064, 1.03019, 1.00997, 1.06378, 1.01307, 1.12278, 1.13592, 1.01751, 1.01853,
                1.00837, 1.01252, 1.00623, 1.00206, 1.01316, 1.0027,  1.02534, 1.02805, 1.01381, 1.01462, 1.00661,
                1.00988, 1.00492, 1.00162, 1.01039, 1.00213, 1.02,    1.02214, 1.00037, 1.00039, 1.00018, 1.00027,
                1.00013, 1.00004, 1.00028, 1.00006, 1.00054, 1.0006,  1.00013, 1.00014, 1.00006, 1.00009, 1.00005,
                1.00002, 1.0001,  1.00002, 1.00019, 1.00021},
            std::vector<T>{1,       1.00032, 1.0003,  1.00004, 1.00032, 1.00008, 1.00013, 1.00013, 1.00022, 1.0003,
                           1.00192, 1.00071, 1.00119, 1.00101, 1.00052, 1.00121, 1.00208, 1.00104, 1.00098, 1.00213,
                           1.00353, 1.00324, 1.00364, 1.00042, 1.00235, 1.00392, 1.00376, 1.00376, 1.00124, 1.00027,
                           1.00001, 1.00001, 1.00001, 1,       1,       1,       1,       1.00001, 1,       1,
                           1.00013, 1.00014, 1.00006, 1.00009, 1.00005, 1.00002, 1.0001,  1.00002, 1.00019, 1.00021},
            "augru_sequence_attentional_gate_provided"),
        AUGRUSequenceParams(
            3,
            4,
            5,
            6,
            ET,
            std::vector<T>{
                18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f,  8.754645f,  1.173500f,
                19.354236f, 18.344900f, 16.889204f, 15.882624f, 5.627136f,  18.532579f, 3.884619f,  5.119867f,
                19.311458f, 13.728893f, 14.391294f, 14.994748f, 1.131725f,  7.582668f,  14.131282f, 19.547387f,
                17.038887f, 9.964800f,  0.993434f,  11.316858f, 5.330938f,  17.378582f, 14.467881f, 4.232232f,
                1.326875f,  5.338556f,  6.427002f,  7.961141f,  11.043235f, 13.890585f, 15.062217f, 11.441225f,
                14.734964f, 17.898548f, 3.364136f,  12.155336f, 13.873233f, 5.822778f,  14.347963f, 3.387873f,
                11.021886f, 15.638179f, 15.419064f, 3.743839f,  7.656481f,  9.581622f,  11.851100f, 4.481464f,
                2.963150f,  18.103926f, 1.524719f,  6.200507f,  10.349086f, 1.085302f,  9.037059f,  8.240071f,
                9.869549f,  13.749188f, 6.019619f,  7.583932f,  9.870675f,  5.238130f,  3.383805f,  6.283896f},
            std::vector<T>{17.012305f,
                           0.280625f,
                           4.584126f,
                           5.899313f,
                           17.788775f,
                           19.869320f,
                           17.561679f,
                           1.209108f,
                           2.772207f,
                           15.623852f,
                           0.212452f,
                           8.111215f,
                           5.552669f,
                           10.256264f,
                           0.026503f},
            std::vector<int64_t>{6, 6, 6},
            std::vector<T>{2.599543f,  1.017497f,  2.188785f,  9.186879f,  19.503938f, 9.249134f,  1.613915f,
                           16.139065f, 16.139263f, 6.162586f,  3.584053f,  13.815329f, 3.166837f,  9.710348f,
                           13.262320f, 5.637648f,  7.555024f,  4.282188f,  0.890288f,  9.009603f,  6.672247f,
                           10.287107f, 3.250285f,  17.159962f, 12.805244f, 7.266579f,  6.671443f,  4.756829f,
                           14.331350f, 4.955475f,  15.988379f, 1.444935f,  8.917654f,  13.265950f, 14.192596f,
                           6.813692f,  6.118729f,  9.446750f,  6.676908f,  2.862558f,  7.298118f,  14.044843f,
                           4.047191f,  18.313578f, 14.433683f, 10.046828f, 6.272552f,  5.960752f,  7.687321f,
                           17.799588f, 17.974497f, 3.092019f,  17.537077f, 5.673742f,  7.945506f,  16.820461f,
                           3.382466f,  14.536867f, 10.431873f, 17.666089f},
            std::vector<T>{19.883110f, 3.627721f,  12.381158f, 8.494785f,  0.744855f,  2.083576f,  3.628426f,
                           13.435420f, 8.021385f,  16.324589f, 9.171570f,  5.194103f,  9.534415f,  3.747218f,
                           14.976561f, 15.450245f, 0.690866f,  14.611735f, 12.058640f, 12.255162f, 11.922434f,
                           5.324248f,  16.084200f, 11.910202f, 8.972001f,  8.331036f,  5.271550f,  3.376512f,
                           17.947813f, 11.445078f, 19.813407f, 7.357054f,  18.609516f, 1.641881f,  15.659794f,
                           12.757155f, 19.407852f, 15.042537f, 5.609916f,  5.240596f,  16.863105f, 2.939757f,
                           7.419171f,  17.463287f, 15.461648f, 3.089222f,  0.349571f,  17.916363f, 17.127918f,
                           9.218649f,  16.540375f, 19.735329f, 14.503906f, 2.743288f,  18.953856f, 7.761779f,
                           15.795299f, 4.491015f,  16.724311f, 10.091499f, 8.233435f,  7.727666f,  17.705235f,
                           10.873172f, 6.631204f,  4.461747f,  0.832513f,  7.237117f,  12.597311f, 13.430508f,
                           11.884650f, 3.903417f,  8.122048f,  14.688200f, 3.733118f},
            std::vector<T>{14.387985f,
                           12.398350f,
                           12.775042f,
                           11.106416f,
                           18.022651f,
                           2.087257f,
                           17.773750f,
                           15.364595f,
                           9.153267f,
                           14.613577f,
                           11.195361f,
                           15.070744f,
                           1.611076f,
                           11.896046f,
                           10.134009f},
            std::vector<T>{9.273749f,
                           12.871767f,
                           16.940379f,
                           9.644809f,
                           8.121616f,
                           12.174741f,
                           11.509982f,
                           10.122257f,
                           4.616639f,
                           13.560133f,
                           3.175609f,
                           5.129174f,
                           2.827964f,
                           9.646965f,
                           9.387886f,
                           1.972116f,
                           17.192705f,
                           6.235506f},
            std::vector<T>{
                -131.482, 6.95193,  -28.6542, -39.5357, -137.906, 1, 1,       1,      1,       1,
                1,        1,        1,        1,        1,        1, 1,       1,      1,       1,
                1,        1,        1,        1,        1,        1, 1,       1,      1,       1,
                -197.316, -173.063, -1.19772, -17.6259, -152.696, 1, 1,       1,      1,       1,
                1,        1,        1,        1,        1,        1, 1,       1,      1,       1,
                1,        1,        1,        1,        1,        1, 1,       1,      1,       1,
                2.43961,  -11.999,  -7.32212, -15.9201, 2.77952,  1, 94.1084, 72.961, 147.308, 1,
                1,        -779.982, -602.601, -1226.21, 1,        1, 1,       1,      1,       1,
                1,        1,        1,        1,        1,        1, 1,       1,      1,       1,
            },
            std::vector<T>{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            "augru_sequence_different_input_size_and_hidden_size_and_seq_length"),
        AUGRUSequenceParams(
            3,
            4,
            4,
            4,
            ET,
            std::vector<T>{6.333189f, 5.312533f, 3.092159f, 6.788004f, 6.543326f, 6.307378f, 7.487966f, 3.300125f,
                           5.563141f, 5.551623f, 3.812029f, 0.132248f, 6.767892f, 7.179934f, 4.832786f, 7.047989f,
                           7.439896f, 5.970488f, 4.878981f, 7.562621f, 7.069236f, 6.484528f, 3.208064f, 5.561788f,
                           3.716249f, 3.412311f, 2.414488f, 7.465214f, 6.444024f, 6.718469f, 1.158724f, 0.874442f,
                           3.319976f, 3.639372f, 5.725887f, 6.594659f, 2.427224f, 7.611652f, 4.804684f, 3.739928f,
                           1.892036f, 2.038615f, 1.297785f, 2.687379f, 7.228432f, 3.015881f, 1.658817f, 6.812868f},
            std::vector<T>{1.905747f,
                           1.157613f,
                           7.828747f,
                           0.730339f,
                           0.177484f,
                           6.356011f,
                           7.802150f,
                           0.351901f,
                           2.614103f,
                           5.295752f,
                           1.925256f,
                           5.925945f},
            std::vector<int64_t>{2, 4, 6},
            std::vector<T>{4.092708f, 3.566296f, 1.985790f, 6.146150f, 6.427968f, 7.096002f, 7.786629f, 1.156184f,
                           2.091389f, 3.677408f, 0.800674f, 2.707813f, 5.396107f, 5.135335f, 3.197786f, 2.983154f,
                           3.029478f, 1.616802f, 2.162019f, 6.922834f, 5.473023f, 4.648859f, 7.976208f, 0.100666f,
                           1.022222f, 6.531802f, 4.358081f, 2.619875f, 2.189079f, 4.086223f, 7.818407f, 1.802662f,
                           7.781939f, 7.542665f, 0.512391f, 6.402292f, 6.450581f, 5.147434f, 5.103659f, 0.894397f,
                           3.192224f, 3.798631f, 4.647818f, 3.119819f, 6.469874f, 1.386456f, 2.030223f, 6.888086f},
            std::vector<T>{5.094750f, 0.455363f, 4.989539f, 0.998320f, 6.369301f, 6.971411f, 1.183518f, 1.386444f,
                           7.572741f, 4.089349f, 0.116142f, 3.784642f, 7.925501f, 6.721643f, 3.293674f, 5.754296f,
                           0.642623f, 2.969238f, 3.536983f, 6.635469f, 1.634170f, 0.507635f, 0.205818f, 0.014995f,
                           4.528792f, 7.128315f, 2.403315f, 7.728932f, 4.206394f, 6.285463f, 5.314773f, 6.473219f,
                           2.506818f, 0.430820f, 3.337787f, 3.828441f, 2.620897f, 5.545934f, 2.593279f, 3.601373f,
                           2.595556f, 0.687849f, 5.277596f, 4.074282f, 1.844880f, 1.232070f, 4.970289f, 5.472321f},
            std::vector<T>{5.516398f,
                           5.621736f,
                           4.341954f,
                           6.820305f,
                           4.760572f,
                           7.643595f,
                           1.733547f,
                           3.100034f,
                           7.009072f,
                           3.027971f,
                           5.044797f,
                           0.534897f},
            std::vector<T>{5.472119f,
                           1.116471f,
                           4.916850f,
                           1.217513f,
                           5.672895f,
                           4.827186f,
                           2.210116f,
                           3.160670f,
                           4.265747f,
                           3.949529f,
                           4.224079f,
                           3.049556f},
            std::vector<T>{-3.05061, 0.295136, -29.539,  2.20596,  1,        1.0821, 2.32396, -1.30623,
                           0,        0,        0,        0,        0,        0,      0,       0,
                           4.84353,  -24.0281, -30.7857, 4.0285,   1,        -1,     122.647, 1,
                           1,        3.42023,  -146.207, 1,        1,        1,      319.066, 1,
                           -4.27125, -13.0288, -2.02165, -15.0869, 16.5477,  1,      1,       1,
                           -49.1271, 1,        1,        1,        0.999999, -1,     -1,      1},
            std::vector<T>{1, 1.0821, 2.32396, -1.30623, 1, 1, 319.066, 1, 0, 0, 0, 0},
            "augru_sequence_different_sequence_len_in_each_batch"),
    };
    return params;
}

template <element::Type_t ET>
std::vector<AUGRUSequenceParams> generateParamsBF16() {
    using T = typename element_type_traits<ET>::value_type;
    std::vector<AUGRUSequenceParams> params{
        AUGRUSequenceParams(
            3,
            4,
            5,
            6,
            ET,
            std::vector<T>{
                18.351103f, 13.520717f, 11.687705f, 16.378006f, 15.568568f, 2.611258f,  8.754645f,  1.173500f,
                19.354236f, 18.344900f, 16.889204f, 15.882624f, 5.627136f,  18.532579f, 3.884619f,  5.119867f,
                19.311458f, 13.728893f, 14.391294f, 14.994748f, 1.131725f,  7.582668f,  14.131282f, 19.547387f,
                17.038887f, 9.964800f,  0.993434f,  11.316858f, 5.330938f,  17.378582f, 14.467881f, 4.232232f,
                1.326875f,  5.338556f,  6.427002f,  7.961141f,  11.043235f, 13.890585f, 15.062217f, 11.441225f,
                14.734964f, 17.898548f, 3.364136f,  12.155336f, 13.873233f, 5.822778f,  14.347963f, 3.387873f,
                11.021886f, 15.638179f, 15.419064f, 3.743839f,  7.656481f,  9.581622f,  11.851100f, 4.481464f,
                2.963150f,  18.103926f, 1.524719f,  6.200507f,  10.349086f, 1.085302f,  9.037059f,  8.240071f,
                9.869549f,  13.749188f, 6.019619f,  7.583932f,  9.870675f,  5.238130f,  3.383805f,  6.283896f},
            std::vector<T>{17.012305f,
                           0.280625f,
                           4.584126f,
                           5.899313f,
                           17.788775f,
                           19.869320f,
                           17.561679f,
                           1.209108f,
                           2.772207f,
                           15.623852f,
                           0.212452f,
                           8.111215f,
                           5.552669f,
                           10.256264f,
                           0.026503f},
            std::vector<int64_t>{6, 6, 6},
            std::vector<T>{2.599543f,  1.017497f,  2.188785f,  9.186879f,  19.503938f, 9.249134f,  1.613915f,
                           16.139065f, 16.139263f, 6.162586f,  3.584053f,  13.815329f, 3.166837f,  9.710348f,
                           13.262320f, 5.637648f,  7.555024f,  4.282188f,  0.890288f,  9.009603f,  6.672247f,
                           10.287107f, 3.250285f,  17.159962f, 12.805244f, 7.266579f,  6.671443f,  4.756829f,
                           14.331350f, 4.955475f,  15.988379f, 1.444935f,  8.917654f,  13.265950f, 14.192596f,
                           6.813692f,  6.118729f,  9.446750f,  6.676908f,  2.862558f,  7.298118f,  14.044843f,
                           4.047191f,  18.313578f, 14.433683f, 10.046828f, 6.272552f,  5.960752f,  7.687321f,
                           17.799588f, 17.974497f, 3.092019f,  17.537077f, 5.673742f,  7.945506f,  16.820461f,
                           3.382466f,  14.536867f, 10.431873f, 17.666089f},
            std::vector<T>{19.883110f, 3.627721f,  12.381158f, 8.494785f,  0.744855f,  2.083576f,  3.628426f,
                           13.435420f, 8.021385f,  16.324589f, 9.171570f,  5.194103f,  9.534415f,  3.747218f,
                           14.976561f, 15.450245f, 0.690866f,  14.611735f, 12.058640f, 12.255162f, 11.922434f,
                           5.324248f,  16.084200f, 11.910202f, 8.972001f,  8.331036f,  5.271550f,  3.376512f,
                           17.947813f, 11.445078f, 19.813407f, 7.357054f,  18.609516f, 1.641881f,  15.659794f,
                           12.757155f, 19.407852f, 15.042537f, 5.609916f,  5.240596f,  16.863105f, 2.939757f,
                           7.419171f,  17.463287f, 15.461648f, 3.089222f,  0.349571f,  17.916363f, 17.127918f,
                           9.218649f,  16.540375f, 19.735329f, 14.503906f, 2.743288f,  18.953856f, 7.761779f,
                           15.795299f, 4.491015f,  16.724311f, 10.091499f, 8.233435f,  7.727666f,  17.705235f,
                           10.873172f, 6.631204f,  4.461747f,  0.832513f,  7.237117f,  12.597311f, 13.430508f,
                           11.884650f, 3.903417f,  8.122048f,  14.688200f, 3.733118f},
            std::vector<T>{14.387985f,
                           12.398350f,
                           12.775042f,
                           11.106416f,
                           18.022651f,
                           2.087257f,
                           17.773750f,
                           15.364595f,
                           9.153267f,
                           14.613577f,
                           11.195361f,
                           15.070744f,
                           1.611076f,
                           11.896046f,
                           10.134009f},
            std::vector<T>{9.273749f,
                           12.871767f,
                           16.940379f,
                           9.644809f,
                           8.121616f,
                           12.174741f,
                           11.509982f,
                           10.122257f,
                           4.616639f,
                           13.560133f,
                           3.175609f,
                           5.129174f,
                           2.827964f,
                           9.646965f,
                           9.387886f,
                           1.972116f,
                           17.192705f,
                           6.235506f},
            std::vector<T>{-130,    6.9375,   -28.25, -39.25,   -136, 1, 1,  1,  1,   1, 1, 1,    1,    1,     1,
                           1,       1,        1,      1,        1,    1, 1,  1,  1,   1, 1, 1,    1,    1,     1,
                           -196,    -172,     -1.125, -17.5,    -152, 1, 1,  1,  1,   1, 1, 1,    1,    1,     1,
                           1,       1,        1,      1,        1,    1, 1,  1,  1,   1, 1, 1,    1,    1,     1,
                           2.42188, -11.9375, -7.25,  -15.6875, 2.75, 1, 93, 72, 144, 1, 1, -768, -592, -1184, 1,
                           1,       1,        1,      1,        1,    1, 1,  1,  1,   1, 1, 1,    1,    1,     1},
            std::vector<T>{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
            "augru_sequence_bfloat16"),
    };
    return params;
}

std::vector<AUGRUSequenceParams> generateCombinedParams() {
    const std::vector<std::vector<AUGRUSequenceParams>> generatedParams{
        generateParams<element::Type_t::f64>(),
        generateParams<element::Type_t::f32>(),
        generateParams<element::Type_t::f16>(),
        generateParamsBF16<element::Type_t::bf16>(),
    };
    std::vector<AUGRUSequenceParams> combinedParams;

    for (const auto& params : generatedParams) {
        combinedParams.insert(combinedParams.end(), params.begin(), params.end());
    }
    return combinedParams;
}

INSTANTIATE_TEST_SUITE_P(smoke_AUGRUSequence_With_Hardcoded_Refs,
                         ReferenceAUGRUSequenceTest,
                         testing::ValuesIn(generateCombinedParams()),
                         ReferenceAUGRUSequenceTest::getTestCaseName);

}  // namespace
